package com.haoniu.web.controller.task;

import com.haoniu.common.utils.chatbot.ChatBotSend;
import com.haoniu.framework.web.domain.Server;
import com.haoniu.framework.web.domain.server.Jvm;
import com.haoniu.framework.web.domain.server.Mem;
import com.haoniu.framework.web.domain.server.SysFile;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 描述:
 * 服务监控推送
 *
 * @author shilvfei
 * @create 2018-12-03 18:29
 */
@Component
public class ServerTask {

    /**
     * 每天凌晨1点
     *   服务监控推送
     */
    @Scheduled(cron = "20 01 01 * * ?")
    // @Scheduled(cron = "*/1 * * * * ?")
    public void taskAddTeamMoney() throws Exception {
        Server server = new Server();
        server.copyTo();

        StringBuilder logs = new StringBuilder();
        logs.append("【CPU】").append("\n");
        logs.append("[核心数]").append("    ").append(server.getCpu().getCpuNum()).append("\n");
        logs.append("[用户使用率]").append("    ").append(server.getCpu().getUsed()+"%").append("\n");
        logs.append("[系统使用率]").append("    ").append(server.getCpu().getSys()+"%").append("\n");
        logs.append("[当前空闲率]").append("    ").append(server.getCpu().getFree()+"%").append("\n");

        logs.append("【内存】").append("\n");
        logs.append("属性").append("    ").append("内存").append("    ").append("JVM").append("\n");
        Mem mem = server.getMem();
        Jvm jvm = server.getJvm();
        logs.append("[总内存]").append("    ").append(mem.getTotal()+"G").append("    ").append(jvm.getTotal()+"M").append("\n");
        logs.append("[已用内存]").append("    ").append(mem.getUsed()+"G").append("    ").append(jvm.getUsed()+"M").append("\n");
        logs.append("[剩余内存]").append("    ").append(mem.getFree()+"G").append("    ").append(jvm.getFree()+"M").append("\n");
        logs.append("[使用率]").append("    ").append(mem.getUsage()+"%").append("    ").append(jvm.getUsage()+"%").append("\n");

        logs.append("【Java虚拟机信息】").append("\n");
        logs.append("[启动时间]").append("    ").append(jvm.getStartTime()).append("\n");
        logs.append("[运行时长]").append("    ").append(jvm.getRunTime()).append("\n");

        List<SysFile> sysFiles = server.getSysFiles();
        logs.append("【磁盘状态】").append("\n");
        logs.append("盘符路径").append("    ")
                .append("文件系统").append("    ")
                .append("盘符类型").append("    ")
                .append("总大小").append("    ")
                .append("可用大小").append("    ")
                .append("已用大小").append("    ")
                .append("已用百分比").append("\n");
        for (SysFile sysFile:sysFiles) {
            logs.append(sysFile.getDirName()).append("    ")
                    .append(sysFile.getSysTypeName()).append("    ")
                    .append(sysFile.getTypeName()).append("    ")
                    .append(sysFile.getTotal()).append("    ")
                    .append(sysFile.getFree()).append("    ")
                    .append(sysFile.getUsed()).append("    ")
                    .append(sysFile.getUsage()+"%").append("\n");
        }

        //推送消息
        ChatBotSend.sendDing(logs.toString());
    }

}
